﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//第二题：
//编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，
//另一个值表示用户想要从银行账户中提取的金额。
//实现存取款功能，
//用户功能选择：1、存款，2、取款
//取款时：
//当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，
//异常信息可以写“取款金额大于余额，请重新输入”
//，如此以确保取款金额始终不大于当前余额。
//操作结束，打印输出余额是多少。
//最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。
namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            
            Console.WriteLine("用户功能选择：1、存款，2、取款");
            string str = Console.ReadLine();
            switch (str)
            {
                case "1":
                    Deposit();
                    break;
                case "2":
                    Withdrawal();
                    break;
                default:
                    Console.WriteLine("输入错误，请重新输入");
                    break;
            }
        }

        private static void Withdrawal()
        {
            float money = 0;
            float b;
            while (true)
            {
                try
                {
                    Console.WriteLine("请输入要取出的金额：(取出金额为0时结束取款)");
                    b = float.Parse(Console.ReadLine());
                    if (b == 0)
                    {
                        break;
                    }
                    if (b <= 0)
                    {
                        Console.WriteLine("输入错误，请重新输入：");
                        continue;
                    }
                    else if (b > money)
                    {
                        throw new ArgumentOutOfRangeException();
                    }
                }
                catch (ArgumentOutOfRangeException)
                {
                    Console.WriteLine("取款金额大于余额，请重新输入");
                    continue;
                }
                catch (Exception)
                {
                    Console.WriteLine("输入错误，请重新输入：");
                    continue;
                }
                break;
            }
            money -= b;
            Console.WriteLine($"取款成功！余额为：{money}");
        }

        private static void Deposit()
        {
            float money = 0;
            float b;
            while (true)
            {
                Console.WriteLine("请输入要存的金额：(输入的存款为0时结束存款)");

                try
                {
                    b = float.Parse(Console.ReadLine());
                    if (b == 0)
                    {
                        break;
                    }
                }
                catch (FormatException)
                {
                    Console.WriteLine("输入错误，请重新输入");
                    continue;
                }
                if (b <= 0)
                {
                    Console.WriteLine("输入错误，请重新输入");
                    continue;
                }
                break;
            }
            money += b;
            Console.WriteLine($"存款成功！余额为：{money}");
        }
    }
}

